import 'package:flutter_admin/pages/common/cry/model/page_model.dart';
import 'package:flutter_admin/pages/common/cry/model/response_body_api.dart';
import 'package:flutter_admin/utils/kwargs.dart';
import 'package:flutter_admin/utils/odoo_http_util.dart';

class PurchaseSupplierEvaluationOdooApi {
  static Future<ResponseBodyApi> page({data}) async {
    ResponseBodyApi responseBodyApi;
    try {
      PageModel pageModel = data['page'];
      List domainList = data['domainList'];
      // var fieldsInfo = {
      //   'purchase.evaluation.template': [
      //     'template_id',
      //     'template_name',
      //   ],
      // };
      Kwargs recordsKwargs = Kwargs(
        domain: domainList,
        limit: pageModel.size,
        offset: (pageModel.current - 1) * pageModel.size,
        // order: pageModel.orders[0].column! +
        //     " " +
        //     (pageModel.orders[0].asc! ? "asc" : "desc")
      );
      var records = await OdooHttpUtil.callKw(
        model: 'purchase.supplier.evaluation',
        method: 'search_evaluation_data',
        kwargs: recordsKwargs.toMap(),
        // fieldsInfo: fieldsInfo,
      );
      var total = await OdooHttpUtil.callKw(
          model: 'purchase.supplier.evaluation',
          method: 'search_evaluation_data_count',
          kwargs: {"domain": domainList});
      List<Map<String, dynamic>> list = [];
      records.forEach((element) {
        Map<String, dynamic> map = element;
        list.add(map);
      });
      pageModel.records = list;
      pageModel.total = total;
      pageModel.pages = total ~/ pageModel.size + 1;
      responseBodyApi = ResponseBodyApi(success: true, data: pageModel);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> removeByIds(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      var result = await OdooHttpUtil.callKw(
          model: 'purchase.supplier.evaluation',
          method: "to_del",
          kwargs: {
            "domain": [
              ['id', 'in', data]
            ]
          });
      responseBodyApi = ResponseBodyApi(success: true, data: result);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> saveOrUpdate(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      var res;
      if (data["id"] == null) {
        res = await OdooHttpUtil.callKw(
            model: 'purchase.supplier.evaluation',
            method: 'create',
            args: [data]);
      } else {
        res = await OdooHttpUtil.callKw(
            model: 'purchase.supplier.evaluation',
            method: 'write',
            args: [
              [data["id"]],
              data
            ]);
      }
      responseBodyApi = ResponseBodyApi(success: true, data: res);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> analysisPage({data}) async {
    ResponseBodyApi responseBodyApi;
    try {
      PageModel pageModel = data['page'];
      List domainList = data['domainList'];
      Kwargs recordsKwargs = Kwargs(
        domain: domainList,
        limit: pageModel.size,
        offset: (pageModel.current - 1) * pageModel.size,
        // order: pageModel.orders[0].column! +
        //     " " +
        //     (pageModel.orders[0].asc! ? "asc" : "desc")
      );
      var records = await OdooHttpUtil.callKw(
          model: 'purchase.supplier.evaluation',
          method: 'search_evaluation_detail',
          kwargs: recordsKwargs.toMap());
      var total = await OdooHttpUtil.callKw(
          model: 'purchase.supplier.evaluation',
          method: 'search_evaluation_detail_count',
          kwargs: {"domain": domainList});
      List<Map<String, dynamic>> list = [];
      records.forEach((element) {
        Map<String, dynamic> map = element;
        list.add(map);
      });
      pageModel.records = list;
      pageModel.total = total;
      pageModel.pages = total ~/ pageModel.size + 1;
      responseBodyApi = ResponseBodyApi(success: true, data: pageModel);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> findAll({data}) async {
    ResponseBodyApi responseBodyApi;
    try {
      List domainList = data['domainList'];
      Kwargs recordsKwargs = Kwargs(
        domain: domainList,
      );
      var records = await OdooHttpUtil.callKw(
          model: 'purchase.evaluation.detail',
          method: 'search_read',
          kwargs: recordsKwargs.toMap());

      responseBodyApi = ResponseBodyApi(success: true, data: records);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> batchSave(dataList) async {
    ResponseBodyApi responseBodyApi;
    try {
      await OdooHttpUtil.callKw(
          model: 'purchase.evaluation.detail',
          method: 'create',
          args: [dataList]);
      responseBodyApi = ResponseBodyApi(success: true);
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> batchUpdate(data) async {
    ResponseBodyApi responseBodyApi;
    try {
      var res = await OdooHttpUtil.callKw(
          model: 'purchase.evaluation.detail',
          method: 'update_detail_data',
          args: [],
          kwargs: {"domain": data});

      if (res['code'] != 200) {
        responseBodyApi =
            ResponseBodyApi(success: false, message: '请求出错了：' + res['message']);
      } else {
        responseBodyApi = ResponseBodyApi(success: true);
      }
    } catch (e) {
      responseBodyApi =
          ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }
}
